Add SQL Notebooks support (.exabook files)#29
Conversation
3a9bfa9 to
b991960
Compare
Interactive notebooks with SQL code cells and markdown documentation. SQL cells execute against the active Exasol connection with inline HTML result tables showing row counts, timing, and execution order. - NotebookSerializer: JSON-based .exabook format with transient outputs - NotebookController: executes cells via QueryExecutor with cancellation - CodeLens hidden in notebook cells (they have native run buttons) - Demo notebook in examples/ - Bump version to 1.4.0 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Fix changelog entries to descending version order - Remove deprecated vscode-test (replaced by @vscode/test-electron) - Replace @tootallnate/once override with glob override ($glob) - Eliminates 9 of 11 npm deprecation warnings Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
bbdbe0c to
2b9b6d4
Compare
|
Nice work on the notebook support — clean implementation that follows the VS Code notebook API well. A Must fixXSS in HTML result rendering (src/notebooks/controller.ts:139) escapeHtml doesn't escape single quotes. Query results come from the database, so if someone stores private escapeHtml(s: string): string { Should fixSilent parse failures in serializer (src/notebooks/serializer.ts:17)If a .exabook file contains malformed JSON, the user gets an empty notebook with no indication anything catch { No input validation on deserialized cells (src/notebooks/serializer.ts:20-24)The deserializer trusts the JSON shape completely — if kind or value is missing or the wrong type, it'll Worth checkingDisposable registration (src/extension.ts:55)notebookController (the wrapper class) gets pushed into context.subscriptions. The class has a dispose() Version historyThe changelog backfills 1.3.1 and 1.3.2 entries that weren't in the previous version — was 1.3.3 Everything else looks good — CodeLens scheme check, transientOutputs: true, cancellation wiring, 500-row |
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…null-guard deserializer Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
… 22 unit tests Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
Thanks for the thorough review! All items addressed: Must fix
Should fix
Worth checking
Additional fixes from deep review
Total: 22 new unit tests (216 passing). |

Summary
.exabookfile format for interactive SQL exploration with inline resultsexamples/demo.exabookArchitecture
src/notebooks/serializer.ts—NotebookSerializerreading/writing JSON.exabookfiles withtransientOutputs: true(results not saved to disk)src/notebooks/controller.ts—NotebookControllerexecuting SQL cells via existingQueryExecutor, rendering results as styled HTML tablesTest plan
examples/demo.exabook— notebook renders with markdown + SQL cells.exabookfile — opens as empty notebook🤖 Generated with Claude Code